package com.idig8.day01;

import com.idig8.until.TimeTool;

public class Main {

    /**
     * 斐波那契数列，0，1，1，2，3，5，8，13
     * 求第n个数是多少，
     * @param n
     * @return
     */
    public static Long fib(int n){

        if(n==1) return 0l;

        if(n<=3&&n>1) return 1l;

        return fib(n-1)+fib(n-2);
    }

    public static Long fib2(int n){
        if(n==1) return 0l;

        if(n<=3&&n>1) return 1l;

        Long first = 0l;
        Long second = 1l;

        for(long i = 0;i<n-2;i++){
            Long sum = first + second;
            first = second;
            second = sum;
        }
        return second;
    }



    public static void main(String[] args){
        TimeTool.getTime(() -> {
            System.out.println("通过递归的算法，查询出来数据的结果："+fib(50));

        });
        TimeTool.getTime(() -> {
            System.out.println("通过赋值的算法，查询出来数据的结果："+fib2(50));

        });
    }
}
